home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / content / yoono / dialogs / goodbye.js < prev    next >
Text File  |  2009-12-16  |  5KB  |  142 lines

  1.  
  2. const DIALOG = document.getElementById('yoono-dialog-goodbye');
  3. const LOGIN = document.getElementById('yoono-goodbye-currentlogin');
  4. const SUCCESSDELETED = document.getElementById('yoono-goodbye-success-deleted');
  5. const SUCCESSKEPT = document.getElementById('yoono-goodbye-success-kept');
  6. const CONNECTERROR = document.getElementById('yoono-goodbye-connecterror');
  7. const INVALIDUSER = document.getElementById('yoono-goodbye-invaliduser');
  8.  
  9. const OPTION = document.getElementById('yoono-goodbye-option');
  10. const REASON = document.getElementById('yoono-goodbye-reason');
  11. const REASONCONTAINER = document.getElementById('reason-container');
  12.  
  13. const DECK = document.getElementById('goodbye-deck');
  14. const STRBUNDLE = document.getElementById("yoono-strings");
  15. const COMMENTS = document.getElementById("comments");
  16.  
  17. var returnObject;
  18. var serverUrl = '';
  19.  
  20. var USER = YOONO_CMPT.getUserCredential();
  21.  
  22. function initGoodbye() {
  23.    returnObject = window.arguments[0];
  24.    // If uninstall already validated and then canceled before restarting, prefs are gone...
  25.    try {
  26.       // If no user or anonymous, hide the upper part that offers to delete the account
  27.       if(!USER || USER.anonymous) {
  28.         // an 'observes' attribute observing the radiogroup will hide all what we need to hide
  29.         OPTION.hidden = true;
  30.         OPTION.value='delete';
  31.       }
  32.       serverUrl = YNPREFBRANCH.getCharPref('serverurl');
  33.       LOGIN.value = USER.login;
  34.       OPTION.value='keep';
  35.       centerWindow();
  36.       // Get different reasons to display
  37.       var reasonsUrl = YNPREFBRANCH.getCharPref('messages.path');
  38.       reasonsUrl += STRBUNDLE.getString('goodbye.reasons.filename');
  39.       REASON.value = -1; // No reason loaded
  40.       var result = YOONO_CMPT.sendRequest(reasonsUrl, 'GET', 'sync', '', null);
  41.       // show form
  42.       if('' != result[1]) {
  43.          var text = '';
  44.          var id = '';
  45.          var reason = null;
  46.          var xml = result[1];
  47.          for (var i=0; i < xml.reason.length(); i++) {
  48.             text = xml.reason[i].@text.toString();
  49.             id = xml.reason[i].@id.toString();
  50.             // Beware, xml.reason[i].@default gives a syntax error in FF1.5 while is ok in FF2
  51.             defaultReason = xml.reason[i].@['default'];
  52.             defaultReason = defaultReason.toString();
  53.             reason = document.createElement('radio');
  54.             reason.setAttribute('label', text);
  55.             reason.setAttribute('value', id);
  56.             if('true' == defaultReason) {
  57.                 reason.setAttribute('selected', true);
  58.                 REASON.value = id;
  59.             }
  60.             REASON.appendChild(reason);
  61.          }
  62.          if(REASON.childNodes.length) {
  63.              REASONCONTAINER.removeAttribute('collapsed');
  64.          }
  65.       }
  66.       sizeToContent();
  67.    } catch (e) {
  68.       YOONO_LOG.exception(e);
  69.       returnObject.value = true;
  70.       window.arguments[0] = returnObject;
  71.       window.close();  
  72.    }
  73. }
  74.  
  75. function validateForm() {
  76.   clearWarnings();
  77.   DIALOG.buttons="accept";
  78.   DECK.selectedIndex = 1;
  79.   var option = OPTION.value;
  80.   var reason = REASON.value;
  81.   var remove = ('delete'==option)?true:false;
  82.   // build the script to send to server when uninstalling
  83.   returnObject.script = <server-script version="1.0"/>;
  84.   // If no user account, make sure remove is set to false so that server does not send an error back
  85.   if(!USER) remove = false;
  86.   // If anonymous, always remove
  87.   if(USER.anonymous) remove = true;
  88.   var context =  <context/> ;
  89.   context.appendChild(<user-id>{USER.userId}</user-id>);
  90.   if (YOONO_YEXTIF.methods.isStandalone())
  91.     context.appendChild(<version>{YOONO_YEXTIF.methods.getVersion()}</version>);
  92.   else
  93.     context.appendChild(<version>{YOONO_UTILS.getExtensionVersion()}</version>);
  94.   if (YOONO_YEXTIF.methods.isStandalone())
  95.     context.appendChild(<client>dsk</client>);
  96.   else
  97.     context.appendChild(<client>xpi</client>);
  98.   returnObject.script.appendChild(context);
  99.   var child=null;
  100.   if(reason >= 0) {
  101.       child = <uninstall remove-user-account={remove} reason-id={reason}/>
  102.   } else {
  103.       child = <uninstall remove-user-account={remove}/>
  104.   }
  105.   var commentsModified = COMMENTS.getAttribute('typed');
  106.   if('true' == commentsModified) {
  107.       var comments = COMMENTS.value;
  108.       comments = comments.substr(0, 499);
  109.       child.appendChild(COMMENTS.value);
  110.   }
  111.   returnObject.script.appendChild(child);
  112.   setHappyExit();
  113.   return false; // not closing window, user must click again, so that he can read messages
  114. }
  115.  
  116. function setHappyExit() {
  117.   DIALOG.buttons="extra1";
  118.   sizeToContent();
  119.   // Make sure true is returned if user closes window with X button
  120.   returnObject.value = true;
  121.   window.arguments[0] = returnObject;
  122.   cancelForm = validOk;
  123. }
  124.  
  125. function cancelForm() {
  126.     returnObject.value = false;
  127.     window.arguments[0] = returnObject;
  128.     window.close();
  129. }
  130.  
  131. function validOk() {
  132.     window.close();
  133. }
  134.  
  135. function empty(textbox) {
  136.     var typed = textbox.getAttribute('typed') || 'false';
  137.     if('false' == typed) {
  138.       textbox.setAttribute('typed', 'true');
  139.       textbox.value = '';
  140.    }
  141. }
  142.